﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>



//int main()
//{
//	//不变长的数组
//	//int arr[10];
//	//int arr2[3][5];
//
//	int k = 20;
//	int arr[k]; //在gcc编译器上支持，但是在vs这上面不支持
//
//	return 0;
//}



//编写代码，演⽰多个字符从两端移动，向中间汇聚
//#include<string.h>
//#include<windows.h>
//int main()
//{
//	char arr1[] = "welcome to bit!!!";
//	char arr2[] = "*****************";
//
//	int left = 0;
//	size_t right = strlen(arr1) - 1;
//
//	while(left <= right){
//	arr2[left] = arr1[left];
//	arr2[right] = arr1[right];
//	printf("%s\n", arr2);
//	Sleep(1000);//休眠函数，1000表示休息1000毫秒
//	system("cls");//清理屏幕
//	left++;
//	right--;
//	}
//	return 0;
//}



//练习2：⼆分查找
//在有序的数组中，查找指定的数值
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int k = 7;
//	int i = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	for (i = 0; i < sz; i++)
//	{
//		if (arr[i] == k)
//		{
//			printf("找到了，下标是%d\n", i);
//			break;
//		}
//	}
//	if (i == sz)
//	{
//		printf("找不到！\n");
//	}
//}





//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int k = 0;
//	scanf("%d", &k);
//	int left = 0;
//	int right = sizeof(arr) / sizeof(arr[0]) - 1;//strlen是求字符串长度的，这是整型的长度
//	int mid = 0;
//	int find = 0; //假设找不到
//	while (left <= right)//若写成1，在找不到的时候就成死循环了，写成这样在找不到的时候可以停下来
//	{
//		mid = (left + right) / 2;
//		if (arr[mid] < k)
//		{
//			left = mid + 1;
//		}
//		else if (arr[mid] > k)
//		{
//			right = mid - 1;
//		}
//		else
//		{
//			find = 1; //代表找到了
//			break; //找到了就不能再找了，所以要break跳出去
//		}
//	}
//	if (find == 1)
//	{
//		printf("找到了，下标是%d！", mid);
//	}
//	else
//	{
//		printf("没找到！");
//	}
//	return 0;
//}


//int main()
//{
//	int left = 2147483646;
//	int right = 2147483646;
//
//	//数字太大的时候采取这样的写法就可能会出错
//	int mid = (left + right) / 2;
//	printf("%d\n", mid);
//	int mid2 = left + (right - left) / 2;
//	printf("%d", mid2);
//	return 0;
//}




//#include<math.h>
//int main()
//{
//	double result;
//	double a;
//	a = 100;
//	result = sqrt(a);
//	printf("%f", result);
//	return 0;
//}




//写⼀个加法函数，完成2个整型变量的加法操作。
//函数定义
//函数定义时，函数名后边的参数就是函数的形式参数，简称形参
//int Add(int x, int y)
//{
//	//int z = 0;
//	//z = x + y;
//	//return z;
//	return x + y;
//}
//
//int main()
//{
//	int n1 = 0;
//	int n2 = 0;
//	scanf("%d%d", &n1, &n2);
//	//写一个加法函数
//
//	//函数调用
//	//在函数调用的时候，真实传递给函数的参数，就是实参-实际参数
//	//a、b就是实参
//	int r = Add(n1, n2);
//	printf("%d", r);
//	return 0;
//}




//void print(int n)
//{
//	if (n < 0)
//		return;
//	printf("hehe\n");
//}
//
//int main()
//{
//	print(10);
//	print(-1);
//	return 0;
//}




//错误的示范，有些情况下,return没有返回值
//int test(int n)
//{
//	if (n < 0)
//	{
//		return 1;
//	}
//}
//
//
//int main()
//{
//	int r = test(10);
//	printf("%d\n", r);
//	return 0;
//}



//写⼀个函数将⼀个整型数组的内容，全部置为-1，再写⼀个函数打印数组的内容。

//void set_arr(int arr[], int sz)
//{
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		arr[i] = -1;
//	}
//}
//
//
//void print_arr(int arr[], int sz)
//{
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	printf("\n");
//}
//
//
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	//写一个函数将数组arr的内容，全部置为-1
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	print_arr(arr, sz);
//	set_arr(arr, sz);
//	//再写一个函数打印数组的内容
//	print_arr(arr, sz);
//	return 0;
//}